//验证
$(function() {
	$("form").validate({
		submitHandler : function(form) {// 必须写在验证前面，否则无法ajax提交
			ly.ajaxSubmit(form, {// 验证新增是否成功
				type : "post",
				dataType : "json",//ajaxSubmi带有文件上传的。不需要设置json
				success : function(result) {
					if (result.resultSuccess) {
						layer.msg('更新成功！');
						loadPage(rootPath+"/goods/list?id=37");
					} else {
						layer.msg('更新失败！', 3);
					}
				}
			});
		},
		errorPlacement : function(error, element) {// 自定义提示错误位置
			$(".l_err").css('display', 'block');
			//element.css('border','2px solid #FFCCCC');
			$(".l_err").html(error.html());
		},
		success : function(label) {// 验证通过后
			$(".l_err").css('display', 'none');
		}
	});
	
	//是否有商品货品数据
	isHasGoodsProduct();
});

var baseSkuData;	//基本规格数据

//开启或编辑规格
$(document).on("click","#openSku,#editSku",function(){
	//在弹出框中，设置商品规格数据
	setGoodsSkuData();
});

//生成货品
var productIndex = -1;
$(document).on("click","#generateProduct",function(){
	var skuArray= new Array();
	var checkResult = true;
	$("#goodsSkuModal .tab-pane").each(function(i,o){
		//获取当前tab-pane中的规格id和规格名称
		var skuId = $(this).find("#goodsSkuId").val();	
		var skuName = $(this).find("#goodsSkuName").val();
		var array = new Array();
		
		$("#"+skuId+"Table .skuValueInput").each(function(i,o){
			if(this.value==""){
				$("#skuErrorId").html("规格值不能为空！");
				checkResult = false;
				return false;
			}else{
				var skuReleImg = $(this).parents("tr").find(".releImage").attr("id");
				if(!skuReleImg){
					skuReleImg = "";
				}
				array.push(skuId+":"+this.id+":"+skuReleImg+";"+skuName+":"+this.value);
			}
		});
		
		if(array.length>0){
			skuArray.push(array);
		}
	});
	
	if(checkResult){
		//如果生成货品，每次需要重新清空货品表
		$("#productTableId").bootstrapTable("removeAll");
		productDataIndex = 0;
		if(skuArray.length==0){
			$("#skuErrorId").html("请选择规格值！");
		}else{
			$("#skuErrorId").html("");
			var resultArray = compute(skuArray,0);	//对规格值数据进行组合计算
			for(var i=0; i<resultArray.length; i++){
				var j = productDataIndex;
				var data = $("#productTableId").bootstrapTable("getData");
				var row = $("#productTableId").bootstrapTable('getRowByUniqueId', resultArray[i].skuValueId);
				//增加
				var rows = [];	//存储行数据
				rows.push({
					id : resultArray[i].skuValueId,
			        skuValue : resultArray[i].skuValue,
			        storeCount :'<input type="hidden" name="goodsStockList['+j+'].id" value="-1">'+ 
			        			'<input type="hidden" name="goodsStockList['+j+'].skuValueId" value="'+resultArray[i].skuValueId+'" class="procuctSkuValueId" id="'+resultArray[i].skuValueId+'"/>'+
			        	 	   	'<input type="hidden" name="goodsStockList['+j+'].skuValue" value="'+resultArray[i].skuValue+'"/>'+
			        	 	   	'<input type="hidden" name="goodsStockList['+j+'].skuReleImg" value="'+resultArray[i].skuReleImg+'"/>'+
			        	 	   	'<input type="text" class="form-control digits editText" data-field="storeCount" name="goodsStockList['+j+'].baseQuantity" value="'+$("#baseQuantity").val()+'" maxlength="10"/>',
			        oper : '<a href="javascript:;" class="clearProductId" id="'+productIndex+','+resultArray[i].skuValueId+'">清除</a>'
				});
				$("#productTableId").bootstrapTable("append", rows);	//给表格加载数据
				productIndex--;
				productDataIndex++;
				
			}
		}
	}
});

//清除货品
$(document).on("click",".clearProductId",function(){
	if(confirm("确定要清除货品吗？")){
		var ids = this.id.split(',');
		if(ids[0]>0){
			if(productCount==1){
				alert("不能清除已有的最后一个货品！");
			}else{
				//删除货品
				$.ajax({ 
					url : rootPath+"/goodsManage/deleteGoodsProduct", data : {"id":ids[0]}, type : "post", cache : false,
					success: function(result){
				        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
				        	if(result.data){
				        		$("#productTableId").bootstrapTable("removeByUniqueId", ids[1]);	//删除当前行数据
				        		productCount--;
				        	}else{
				        		alert("商品货品不存在！");
				        	}
			        	}else{
			        		alert("获取商品货品失败！");
			        	}
			  		}
				});
			}
		}else{
			$("#productTableId").bootstrapTable("removeByUniqueId", ids[1]);	//删除当前行数据
		}
	}
});

//保存货品
$(document).on("click","#saveGoodsProduct",function(){
	var checkResult = true;
	//验证
	if($("#productTableId").bootstrapTable("getData").length==0){
		$("#goodsSkuModal").modal("toggle");
	}
	
	if(checkResult){
		//修改页面按钮
		$("#editSkuId").empty();
		$("#editSkuId").append("<b>已经启动的规格项：</b>");
		$("#goodsSkuModal li a").each(function(i,o){
			$("#editSkuId").append('<span>'+$(this).text()+'&nbsp;</span>');
		});
		$("#generateProductId").html("<b>已生成货品("+$("#productTableId").bootstrapTable("getData").length+")</b>");
		
		$("#skuDivId").hide();
		$("#openSku,#openSkuDescId,#skuDivId").hide();
		$("#editSku").show();
		$("#isOpenSkuId").val("1");
		
		$("#goodsSkuModal").modal("hide");
	}
});

//清空规格相关的html数据
/*function cleanSkuData(){
	$("#goodsSkuId").empty();
	$("#goodsSkuValueId").empty();
	$("#productTableId").bootstrapTable("removeAll");
}*/

//选择规格关联的商品图片
$(document).on("click",".selectPhoto",function(){
	var obj = this;
	layer.open({
		title : "选择相册图片",
		type : 1,
		area : [ "460", "20%" ],
		content : $("#goodsPhotoId").html(),
		btn:['确定','关闭'],
		yes: function(index, layero){
			var releImage = $('input[name="goodsPhoto"]:checked').val();
			html = '<img src="'+baseFile+releImage+'" id="'+releImage+'" width="20" class="releImage"/>&nbsp;&nbsp;';
			$(obj).parent().prepend(html);
			
			layer.close(index);
		}
	});
	
});


//根据所有的规格和规格值进行排列组合（算法）
//定义对象
function SkuObject(skuValueId,skuValue,skuReleImg){
	this.skuValueId=skuValueId;
	this.skuValue=skuValue;
	this.skuReleImg=skuReleImg;
};

//组合算法
function compute(skuArray, index){
	var resultArray = new Array();	//结果数据
	if(index<skuArray.length){
		var srcArray = skuArray[index];	//源数组
		var destArray = compute(skuArray,++index);	//目标数组			
		for(var i=0; i<srcArray.length; i++){
			//由于数据是二维的，需要拆分
			var srcSku = srcArray[i].split(";");	
			var srcSkuValueId = srcSku[0].split(":");
			var srcSkuValue = srcSku[1].split(":");
			if(destArray.length>0){
				for(var j=0; j<destArray.length; j++){
					//把规格值放到对象中
					var skuObject = new SkuObject();
					skuObject.skuValueId = srcSkuValueId[0]+":"+srcSkuValueId[1]+"、"+destArray[j].skuValueId;
					skuObject.skuValue = srcSkuValue[0]+"："+srcSkuValue[1]+"、"+destArray[j].skuValue;
					skuObject.skuReleImg=srcSkuValueId[2]+"、"+destArray[j].skuReleImg;
					resultArray.push(skuObject);	//把对象放到数组中
				}
			}else{
				//由于数据是二维的，需要拆分
				var srcSku = srcArray[i].split(";");
				var srcSkuValueId = srcSku[0].split(":");
				var srcSkuValue = srcSku[1].split(":");
				//把规格值放到对象中
				var skuObject = new SkuObject();
				skuObject.skuValueId = srcSkuValueId[0]+":"+srcSkuValueId[1];
				skuObject.skuValue = srcSkuValue[0]+"："+srcSkuValue[1];
				skuObject.skuReleImg=srcSkuValueId[2];
				resultArray.push(skuObject);	//把对象放到数组中
			}
		}
	}
	
	return resultArray;
}

//获取基本规格数据
function selectBaseSkuData(){
	$.ajax({url : rootPath+"/baseSku/selectList", type : "get", cache : false, async:false,
		success: function(result){
	        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
	        	//设置类型对应属性数据
	        	if(result.data){
	        		baseSkuData = result.data;
	        	}else{
	        		alert("基本规格数据不存在！");
	        	}
	      	}else{
	      		alert("基本规格数据失败！");
	      	}
		}
	});
}

//设置商品规格数据
function setGoodsSkuData(){
	var skuValueColumns = [
       	{field : "id", title : "ID", width : "50", align : "center", valign : "middle", sortable : "true", visible : false},
       	{field : "skuValue", title : "规格", width : "100", align : "center", valign : "middle", sortable : "true"},
       	{field : "skuImg", title : "规格图片", width : "200", align : "center", valign : "middle", sortable : "true"},
	   	{field : "skuReleImg", title : "规格关联图片", width : "200", align : "center", valign : "middle", sortable : "true"}
  	];
	var config = {
		uniqueId : 'id',
		method : 'get',
		cache : false,
		height : 200,
		striped : true,
		showColumns : false,
		data : "",
		columns : skuValueColumns, 
       	formatNoMatches : function(){
       		return '无规格值记录！';
       	}
	};
	
	$.ajax({url : rootPath+"/baseSku/selectList", type : "get", cache : false,
		success: function(result){
	        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
	        	if(result.data){
	        		//设置商品规格数据
	        		setSkuData(result.data,config);
	        	}else{
	        		alert("获取基本规格数据不存在！");
	        	}
        	}else{
        		alert("获取基本规格数据失败！");
        	}
  		}
	});
	
	//初始化货品表
	initProductTable();
	
	$("#goodsSkuModal").modal("show");
}

//设置规格数据
function setSkuData(skuList,config){
	if($("#isLoadedSkuId").val()=="0"){	//显示基本规格数据
		var skuId = -1;
		$.each(skuList, function(i, value){
			var skuId = this.id;
			var skuName = this.name;
			var classLi = '';
			var classDiv = 'class="tab-pane"';
			if(i==0){
				classLi = 'class="active"';
				classDiv = 'class="tab-pane active"';
			}
			var goodsSkuLi ='<li '+classLi+'>'+
	                  			'<a data-toggle="tab" href="#tab'+skuId+'">'+skuName+'(<span id="span'+skuId+'">0</span>)</a>'+
	              			'</li>';
			$("#goodsSkuId").append(goodsSkuLi);
			var goodsSkuValueDiv='<div id="tab'+skuId+'" '+classDiv+'">'+
									'<input type="hidden" id="goodsSkuId" value="'+skuId+'"/>'+
									'<input type="hidden" id="goodsSkuName" value="'+skuName+'"/>'+
									'<div class="form-group skuGroup">';
									$.each(this.baseSkuValueList, function(i, value){
					goodsSkuValueDiv+='<span><input type="checkbox" id="skuValueId'+this.id+'" value="'+this.id+'" onclick="addSkuValueToTable('+skuId+','+this.id+',\''+this.name+'\',\''+'ddddd'+'\')"/>'+this.name+'</span>&nbsp;';
									});
					goodsSkuValueDiv+='</div><br><br>'+
	                	      		'<table id="'+skuId+'Table" style="table-layout:fixed;word-wrap:break-word;">'+
	                    	  		'</table>'+
	                  			'</div>';
			$("#goodsSkuValueId").append(goodsSkuValueDiv);
			
			$("#"+skuId+"Table").bootstrapTable(config);
			$(window).resize(function () {
				$("#"+skuId+"Table").bootstrapTable('resetView');
			});
		});
		
		
		//查找商品货品对应的规格值数据，并且做规格值选中操作
		selectGoodsSkuValue();
		
		//查找货品数据
		selectGoodsProduct();
		
		$("#isLoadedSkuId").val("1")
	}
}

function addSkuValueToTable(skuId,skuValueId,skuValue,skuImgUrl){
	if($("#skuValueId"+skuValueId).is(':checked')){
		var skuImage = "";
		if(skuImgUrl!="null" && skuImgUrl!=""){
			skuImage = '<img src="'+baseFile+skuImgUrl+'" width="30px"/>'
		}
		var rows = [];	//存储行数据
		rows.push({
			id : skuValueId,
	        skuValue : '<input type="text" class="form-control skuValueInput editText" data-field="skuValue" id="'+skuValueId+'" value="'+skuValue+'" maxlength="10"/>',
	        skuImg : skuImage,
	        skuReleImg : '<span><a href="javascript:;" class="selectPhoto">选择图片</a></span>'
		});
		$("#"+skuId+"Table").bootstrapTable("append", rows);	//给表格加载数据
		
		$("#span"+skuId).text(parseInt($("#span"+skuId).text())+1);	//选择的个数加1
	}else{
		$("#"+skuId+"Table").bootstrapTable("removeByUniqueId", skuValueId);	//根据uniqueId删除行数据
		$("#span"+skuId).text(parseInt($("#span"+skuId).text())-1);	//选择的个数减1
	}
}

//初始化货品表
function initProductTable(){
	var skuColumns = [
         	{field : "id", title : "ID", width : "50", align : "center", valign : "middle", sortable : "true", visible : false},
         	{field : "skuValue", title : "规格值", width : "200", align : "center", valign : "middle", sortable : "true"},
	  	   	{field : "storeCount", title : "库存", width : "100", align : "center", valign : "middle", sortable : "true"},
	  	   	{field : "oper", title : "操作", width : "60", align : "center", valign : "middle", sortable : "true"}
    	];
	var config = {
		uniqueId : 'id',
		cache : false,
		height : 210,
		striped : true,
		showColumns : false,
		data :"",
		columns : skuColumns, 
       	formatNoMatches : function(){
       		return '无货品记录！';
       	}
	};
	
	$(window).resize(function () {
		$('#productTableId').bootstrapTable('resetView');
	});
	
	$('#productTableId').bootstrapTable(config);
}

//已经存在的货品数量
var productCount = 0;
//设置商品货品表格数据
var productDataIndex = 0;
function setGoodsProductData(productArray){
	if(productArray.length>0){
		var rows = [];	//存储行数据
		for(var i=0; i<productArray.length; i++){
			var j = productDataIndex;
			var storeCount = productArray[i].baseQuantity!=null?productArray[i].baseQuantity:"";
			
			rows.push({
				id : productArray[i].id,
		        skuValue : productArray[i].skuValue,
		        storeCount :'<input type="hidden" name="goodsStockList['+j+'].id" value="'+productArray[i].id+'">'+ 
		        	 		'<input type="text" name="goodsStockList['+j+'].baseQuantity" value="'+storeCount+'" class="form-control digits editText" data-field="storeCount" maxlength="10"/>',
		        oper : '<a href="javascript:;" class="clearProductId" id="'+productArray[i].id+','+productArray[i].skuValueId+'">清除</a>'
			});
			productDataIndex++;
		}
		$("#productTableId").bootstrapTable("load", rows);	//给表格加载数据
		
		productCount = productArray.length;
	}
}

//商品是否有对应的货品
function isHasGoodsProduct(){
	var goodsId = $("#id").val();
	if(goodsId!=""){
		$.ajax({url : rootPath+"/goodsStock/selectList", data : {"goodsId":goodsId}, type : "get", cache : false,
			success: function(result){
		        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
		        	//把商品货品数据，加载到表格中
		        	if(result.data){
			        	if(result.data.length==1 && !result.data[0].skuValueId){
			        		$("#openSkuDescId").text("无多规格商品");
			        		$("#openSkuDescId").show();
						}else{
							$("#openSku,#openSkuDescId,#skuDivId").hide();
							$("#editSku").show();
							$("#isOpenSkuId").val("1");
							$("#generateProduct").hide();
							
							$("#generateProductId").html("<b>已生成货品("+result.data.length+")</b>");
							
							//查找商品规格数据
							$.ajax({url : rootPath+"/goodsSku/selectGoodsSku", data : {"goodsId":goodsId}, type : "get", cache : false,
								success: function(result){
									if(result.resultSuccess){	//判断返回结果，返回成功再取数据
										if(result.data){
											if(result.data.length>0){
												$("#editSkuId").append("<b>已经启动的规格项：</b>");
												$.each(result.data,function(i,o){
													var text = this.skuName+"("+this.skuValueCount+")&nbsp;";
													$("#editSkuId").append('<span>'+text+'</span>');
												})
											}
										}
									}
								}
							});
						}
		        	}else{
		        		alert("商品库存数据不存在！");
		        	}
	        	}else{
	        		alert("获取商品库存数据失败！");
	        	}
	  		}
		});
	}else{
		$("#openSku,#openSkuDescId,#skuDivId").show();
		$("#editSku").hide();
	}
}

//查找库存货品数据
function selectGoodsProduct(){
	var goodsId = $("#id").val();
	if(goodsId!=""){
		$.ajax({url : rootPath+"/goodsStock/selectList", data : {"goodsId":goodsId}, type : "get", cache : false,
			success: function(result){
		        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
		        	//把商品货品数据，加载到表格中
		        	if(result.data){
		        		if(result.data.length>1 && result.data[0].freeItem0){
		        			setGoodsProductData(result.data);
		        		}
		        	}
	        	}else{
	        		alert("获取商品货品数据失败！");
	        	}
	  		}
		});
	}
}

//查找商品货品对应的规格值数据，并且做规格值选中操作
function selectGoodsSkuValue(){
	var goodsId = $("#id").val();
	if(goodsId!=""){
		$.ajax({url : rootPath+"/goodsSku/selectList", data : {"goodsId":goodsId}, type : "get", cache : false,
			success: function(result){
		        if(result.resultSuccess){	//判断返回结果，返回成功再取数据
		        	//根据数据，做规格值选中操作
		        	if(result.data){
		        		setSkuValueData(result.data);
		        	}else{
		        		alert("商品货品规格值数据不存在！");
		        	}
	        	}else{
	        		alert("获取商品货品规格值数据失败！");
	        	}
	  		}
		});
	}
}

//设置商品规格值数据（货品数据）
function setSkuValueData(productSkuArray){
	$.each(productSkuArray,function(i,o){
		$("#skuValueId"+this.baseSkuValueId).attr("checked",'true');	//做选中操作
		var skuImage = "";
		if(this.skuImgUrl!=null && this.skuImgUrl!=""){
			skuImage = '<img src="'+baseFile+this.skuImgUrl+'" width="30px"/>'
		}
		var selectReleImage="";
		if(this.skuReleImg){
			selectReleImage = '<img src="'+baseFile+"/"+this.skuReleImgUrl+'" width="30px"/>'+
							  '<a href="javascript:;" id="'+this.skuReleImg+'" class="selectPhoto" data-skuId="'+this.baseSkuId+'">选择图片</a>';
		}else{
			selectReleImage = '<a href="javascript:;" class="selectPhoto">选择图片</a>';
		}
		var rows = [];	//存储行数据
		rows.push({
			id : this.baseSkuValueId,
	        skuValue : '<input type="text" class="form-control skuValueInput editText" data-field="skuValue" id="'+this.baseSkuValueId+'" value="'+this.name+'" maxlength="20"/>',
	        skuImg : skuImage,
	        skuReleImg : '<span>'+selectReleImage+'</span>'
		});
		
		//给规格值表格加载数据
		$("#"+this.baseSkuId+"Table").bootstrapTable("append", rows);	
		//设置tab页上已经选择的规格值的数量
		$("#span"+this.baseSkuId).text($("#"+this.baseSkuId+"Table").bootstrapTable("getData").length);
	});
	
}
